# # 创建集合
# 1. 可以使用大括号{}来进行创建
s = {1, 2, 3, 4}
# 2. 使用set()函数来进行创建, int(), float(), print(),input()
ss = set('1234')
print(type(s))
print(type(ss))


# # 集合的添加和删除
# 添加元素add()
s.add(6)
print(s)
# 删除集合中第一个元素pop()
s.pop()
print(s)
# 删除集合中的元素remove()
s.remove(4)
print(s)



# # 创建元组
# 创建空元组
tuple1 = ()
print(tuple1)
# 创建带有元素的元组，可以有元素类型
tuple2 = (1,"a", 3, "hello", 2.2)
# 创建只有一个元素的元组
tuple3 =(1,)
print(tuple3)
print(type(tuple3))



# # 使用tuple()函数将其它数据类型转换为元组类型。int()语法格式:tuple(数据)发将字符串转换成元组
tuple1 = tuple('hello,world')
print(tuple1)
# 将列表转换成元组[]
list1 =['Python', 'Java', 'C++', 'c']
tuple2 = tuple(list1)
print(tuple2)


# 1，将字符串woxiangfangjia转化成元组
# 2， 使用索引的方式取出最后一个a字母
# 3， 使用正切片来取出f a n g
# 4， 使用负切片实行取出w o


tuple1 = ('w', 'o', 'x', 'i', 'a', 'n', 'g', 'f', 'a', 'n', 'g', 'j', 'i', 'a')
print(tuple1[13])
print(tuple1[7:11])
print(tuple1[-14:-12])


# # 修改元组元素
# turtle1 = (12, 34, 56)
# turtle2 = ('abc', 'mn')
# # 修改元组元素操作是非法的
# turtle1[0] = 100
# turtle2[0] = 2006
# # 连接元组创建一个新的元组，两个数据必须都是元组
# turtle3 = turtle1 + turtle2
# print(turtle3)


t1 = (1, 2, 3)
t2 = ('a', 'b', 'c')
# 连接组合
t3 = t1 + t2
print(t3)


# 修改元组元素操作是非法的
# t1[0] = 100
# 删除元组
t3 = (1, 2, 3, [4, 5, 6])
print(t3)
del t3
print(t3)


# 任务
# 使用input方法输入联系人姓名，电话，邮箱，地址;
# 定义元组t1存储上述信息；
# 输入t1，查看联系人信息；


n = input("请输入添加联系人姓名：")
t = input("请输入13位手机号码：")
e = input("请输入邮箱：")
a = input("请输入地址：")
t1 = ("姓名：", n, "电话：", t, "邮箱：", e, "地址：", a)


# 列表的创建
#  1.使用[]直接创建列表；
# 1.1 创建空列表
l1 = []
print(l1)
# 1.2 创建带有元素的列表
l2 = [1, 2, "python", "java"]
print(l2)
print(type(l2))


# 2.使用list()函数将其他数据类型(字符串，元组，range函数)转换位列表
# 2.1 创建空列表
l3 = list()
print(l3)
# 2.2 将字符串转化为列表
l4 = list("hello world")
print(l4)
# 2.3将元组转化为列表
t5 = tuple("hello")
print(t5)
l5 = list(t5)
print(l5)
# 2.4将range函数转化为列表
l6 = list(range(5)) # 0 1 2 3 4
print(l6)


# 访问列表中的元素
# 使用索引进行访问单个元素
l7 = [1, 2, 3, 4, 'p', 'w', 'r']
# 使用正索引访问p元素
print(l7[4])
# 使用负索引访问w元素
print(l7[-2])


# 2. 使用切片访问一组元素
# 使用切片访问元素的格式：代码如下：
l8 = ['p', 'y', 't', 'h', 'o', 'r']
# 使用正数切片，截取索引位2， 3， 4的元素，默认步长为1
print(l8[2:5])
# 取前三个元素
print(l8[:3])
# 取后三个元素
print(l8[3:])
# 使用正数切片，截取索引为1-5的元素,步长为2
print(l8[1::2])
# 使用负数切片
print(l8[-3:-1])
# 步长如果是负数，即从右向左提取元素
print(l8[::-1])


# # # 遍历列表
# # # 使用for循环遍历列表
# l3 = ['pyhon', 'java', 'c', 'c++', 'r']
# for i in l3
#     print(i)
l9 = ['9', '7', '4', '5']
for i in l9:
    print(i)



# # 修改列表元素
# 修改单个元素
l10 = [1, 100, 1000, 10000, 100000]
# 将索引为2的元素值修改为100
l10[2] = 100
print(l10)

  
# # 修改多个元素
l11 = [1, 2, 3, 4, 5, 6]
# # # 修改1~4 个元素的值(不包括第四个元素)
l11[1: 4] = [45, -56, 98]
print(l11)


# # 列表中添加元素 
# 1. append()用于在列表的末尾追加元素
l12 = ['a', 'b', 'c']
l12.append('f')
print(l12)

# 列表添加列表
l12.append(['e', 'f']) # [a, b, c, f,[e, f]]
print(l12)

# # 2.extend()在列表的末尾一次添加多个元素
l13 = ['a', 'b', 'c']
l13.extend('d')
print(l13)

# 列表添加列表
l13.extend(['e', 'f', 'g', 'h'])
print(l13)
l13.extend('world')
print(l13)


# # 3. insert()在列表的特定位置添加想要的特定元素
l14 = ['python', 'C', 'Java']
# 插入元素，在索引为2处插入go元素
l14.insert(2, 'go')
print(l14)
# # 删除元素
# # remove()删除特定元素

# l15=['1','2','3','4','5']
# l15.remove('2')
# print(l15)
# # 若元素不在列表是，删除会报错
# # pop()删除指定索引元素

# l16=['1','2','3','4','5','6']
# l16.pop(3)
# print(l16)

# # 删除最后一个元素
# l16.pop()
# print(l16)
# l17=['1','2','3','4','5','6','7']
# del l17[4]
# print(l17)
# del l17[1:3]
# print(l17)


# # 清空列表clear方法
# l18=[1,2,'3',4]
# l18.clear()
# print(l18)
   



# # 任务
# # 创建两个空列表name_list和phone_list，用于存储联系人姓名和电话；
# # 向列表中添加联系人信息；
# # 输入联系人编号修改信息；
# # 输入联系人编号删除信息；
# # # 使用clear()清空通讯录。name_list=['张三'， ’李四', '王五', ‘maliu'],phone_list=[123, 236, 258, 598]
name_list=[]
phone_list=[]


while 1:
    print("菜单：1.添加联系人 2.修改联系人 3.删除联系人")
    chioce=input("请输入选择：")
    if chioce == "1":
        name_list.append(input("请输入联系人姓名："))
        phone_list.append(input("请输入联系人手机号："))
        print(name_list)
        print(phone_list)
    elif chioce == "2":
        num = int(input("请输入联系人编号："))
        if len(name_list)>0 and num<=len(name_list):
            name_list[num-1]=input("修改联系人姓名：")
            phone_list[num-1]=input("修改联系人电话")
        else:
            print("联系人编号输入有误")
    elif chioce == "3":
        num =int(input("请输入联系人编号："))
        if len(name_list)>0 and num <= len(name_list):
            name_list.pop(num-1)
            phone_list.pop(num-1)
        else:
            print("联系人编号输入有误")
    else:
        print("显示联系人信息")
        print(name_list)
        print(phone_list)
ls1 = [1, 5, 7, 'a', 'a', 'c', 'b', 6, 4, 1]
print(ls1.index('a'))
print(ls1.index('a', 4))
print(ls1.index('c', 3, 7))
ls2 = [1, 3, 5, 7, 'a','b', 8, 3, 'b', 2, 5, 5, '7' ,1]
print(ls2.count(8))
print(ls2.count(5))
print(ls2.count('f'))

ls3 = ['1', '3', '44', '23', '99', '88', '56', '233', ]
ls3.sort()
print(ls3)
ls3.sort(reverse=True)
print(ls3)

print(ls3)
ls4 = [1, 3, 44, 23, 99, 88, 56, 233]
ls4.sort()
print(ls4)
ls4.sort(reverse=True)
print(ls4)

# """字典"""
# # 字典的创建
# # 使用字符串作为key
# d1 = {'pytion':90,"可视化":89,"英语":85}
# print(type(d1))
# d2={(23,89):"great",30:[1,3,4]}
# print(type(d2))
# # 创建空字典
# d3={}
# print(type(d3))
# d4=dict(数学=98,语文=87,英语=89)
# print(d4)

# 字典元素的访问
# 1.字典名[key]
d5={'数学':95,'数学':99,'数学':88}
print(d5['数学'])
# 键不存在，引发一个keyerror错误

# get()方法获取指定对应值
d6={'数学':95,'数学':99,'数学':88}
print(d6.get('英语'))
print(d6.get('Python'))
print(d6.get('Python','该键不存在'))

# 字典的添加键值对
d7={'数学':95,'数学':99,'数学':88}
d7['可视化']=100
print(d7)

# 字典修改键值对
d8={'数学':95,'数学':99,'数学':88}
d8['语文']=100
print(d8)

# 字典删除键值对
# 1使用del关键字
d9={{'数学':95,'数学':99,'数学':88}}
del d9['语文']
print(d9)
# 2使用pop()方法
d9.pop('数学')
print(d9)